解析一个xml文件并将数据存入数据库 您所在的位置:网站首页 java 将文件存入数据库 解析一个xml文件并将数据存入数据库

解析一个xml文件并将数据存入数据库

2023-11-26 09:59| 来源: 网络整理| 查看: 265

解析xml文件并将文件存入数据库 一、使用dom4j对xml文件进行解析1、首先要有一个xml文件2、需求3、创建Books实例类4、开始解析xml文件5、测试代码:6、结果: 二、进行数据库的数据交互1、在数据库中创建一个books表2、封装数据库连接3、创建好连接后就开始编写插入数据和查询数据的代码4、测试代码:5、结果

一、使用dom4j对xml文件进行解析

首先dom4j是一个外包在使用之前需要导包

链接:https://pan.baidu.com/s/1SNg292iRf_dtJeYdzcx2zw 提取码:w6gq

导包的方法(如果你是用的是Maven,直接在pom文件里添加依赖就好了): 在你的项目下创建一个lib文件夹把下载好的jar包复制进去,右击找到Build Path->Add to Build Path 就可以了。

做好这些我们就开始解析XML文件了。

1、首先要有一个xml文件 linux 王五 50 xml lili 20 jvm zs 100 2、需求

1、输出book信息 2、book信息按照价格排序

3、创建Books实例类

通过xml文件分析,我们需要创建一个Books的实例类用来储存xml的数据

public class Books { private String name; private long id; private int price; private String autherName; public Books() { super(); // TODO Auto-generated constructor stub } public Books(String name, long id, int price, String autherName) { super(); this.name = name; this.id = id; this.price = price; this.autherName = autherName; } public String getName() { return name; } public void setName(String name) { this.name = name; } public long getId() { return id; } public void setId(long id) { this.id = id; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getAutherName() { return autherName; } public void setAutherName(String autherName) { this.autherName = autherName; } @Override public String toString() { return "Books [name=" + name + ", id=" + id + ", price=" + price + ", autherName=" + autherName + "]"; } } 4、开始解析xml文件 import java.util.Comparator; import java.util.List; import java.util.Set; import java.util.TreeSet; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Dom4jTest { public Set analysisXML(){ try { /* * 根据需求要求对价格进行排序 * */ Set list = new TreeSet(new Comparator() { public int compare(Books o1, Books o2) { if(o1.getPrice() > o2.getPrice()) { return 1; }else if(o1.getPrice() return 0; } } }); SAXReader reader = new SAXReader(); Document document = reader.read("src/main/resources/cont.xml"); Element element = document.getRootElement(); /* * 用一个集合接收Element中的数据 * 方便后续操作 */ List childElement = element.elements(); for(Element element2 : childElement) { /* * 获取标签文本内容 * getTestTrim()方法是返回一个String类型的数据 * 并且去除多余的空格 */ String name = element2.element("name").getTextTrim(); String price = element2.element("price").getTextTrim(); String author = element2.element("author").getTextTrim(); /* * 获取属性 * * 获取isbn */ String id = element2.attributeValue("isbn"); /* * 创建book实例对象 * 添加数据 */ Books book = new Books(); book.setName(name); book.setId(Long.parseLong(id)); book.setPrice(Integer.parseInt(price)); book.setAutherName(author); //将book对象添加到集合中 list.add(book); } return list; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } } 5、测试代码: public class ShowBook { public static void main(String[] args) { Dom4jTest dom = new Dom4jTest(); for (Books book : dom.analysisXML()) { System.out.println(book); } } } 6、结果:

在这里插入图片描述

二、进行数据库的数据交互

数据库我用的是Oracle数据库

如果你是用的不是Maven(如果你用的是maven那么你只需要在pom文件中添加依赖)就需要导包

这是数据库连接池的jar包 链接:https://pan.baidu.com/s/1DW0kM3PWq5ZzP--A4BipEQ 提取码:n68v 这是ojdbc8的jar包 链接:https://pan.baidu.com/s/1IBSZ3DBdchVlfxg7UQJlaw 提取码:geqp 1、在数据库中创建一个books表

要向数据库中存入数据,就要在数据库中创建一books表

--建表语句 大小不敏感 create table Books( name varchar2(20) not null, id number primary key, price varchar2(11), authorname varchar2(200) ); --删除表 --drop table books --查询表中所有的消息 select * from books

建好表 查询一下里面没有内容 在这里插入图片描述

2、封装数据库连接

现在我先封装一个数据库的连接

import java.sql.Connection; import com.alibaba.druid.pool.DruidDataSource; /* *这个连接我用的是数据库连接池负责分配、管理和释放数据库连接, *它允许应用程序重复使用一个现有的数据库连接 */ public class OracleConnection { private static DruidDataSource dataSource; static { dataSource = new DruidDataSource(); dataSource.setDriverClassName("oracle.jdbc.OracleDriver"); dataSource.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:XE"); dataSource.setUsername("web"); dataSource.setPassword("web"); //数据库连接的初始连接数为3 dataSource.setInitialSize(3); //数据库连接的最大上限为6 dataSource.setMaxActive(6); } //是否需要手动提交事务 public static Connection getConnection(boolean autoCommit) { Connection connection = null; try { connection = dataSource.getConnection(); connection.setAutoCommit(autoCommit); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return connection; } //默认不自动提交事务 public static Connection getConnection() { return getConnection(false); } } 3、创建好连接后就开始编写插入数据和查询数据的代码 import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; /* * 向数据库中添加数据的方法实现 * 查询数据库中的数据方法的实现 */ public class BookDao { public void insertDate(Books book) { try { //获取连接 Connection connection = OracleConnection.getConnection(); String sql = "insert into books values(?,?,?,?)"; PreparedStatement pre = connection.prepareStatement(sql); //向insert语句中加入数据 pre.setString(1, book.getName()); pre.setLong(2, book.getId()); pre.setInt(3, book.getPrice()); pre.setString(4, book.getAutherName()); pre.executeUpdate(); //提交事务 connection.commit(); pre.close(); connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //从数据库中查询所有书籍 public List selectAllBooks(){ try { List list = new ArrayList(); Connection connection = OracleConnection.getConnection(); /* * 只是简单查询一下所有数据 * 你可以根据你的需求修改sql语句 * 如果你是像我这么分开写的那么在authorname后面一定要有一个空格 * 否则会报没有关键字FROM的异常 */ String sql = "select name,id,price,authorname " + "from books"; PreparedStatement pre = connection.prepareStatement(sql); ResultSet result = pre.executeQuery(); /* * 遍历数据 * 将数据存入books实例类中 * 再将对象添加到集合中 */ while(result.next()) { Books book = new Books(); book.setName(result.getString("name")); book.setId(result.getLong("id")); book.setPrice(result.getInt("price")); book.setAutherName(result.getString("authorname")); list.add(book); } return list; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } } 4、测试代码: public class ShowBook { public static void main(String[] args) { BookDao dao = new BookDao(); Dom4jTest dom = new Dom4jTest(); //向数据库中存入数据 for (Books book : dom.analysisXML()) { dao.insertDate(book); } //读取数据库中的数据 for (Books b : dao.selectAllBooks()) { System.out.println(b); } } } 5、结果

数据库的将数据展示 数据库中的数据 控制台的数据输出 控制台的数据输出



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有